
#line 1 "..\..\main.c" /0
  
#line 1 "D:\6.Embed\61-KEIL-ARM\C51\INC\reg52.h" /0






 
 
 
 
 
 
 sfr P0    = 0x80;
 sfr P1    = 0x90;
 sfr P2    = 0xA0;
 sfr P3    = 0xB0;
 sfr PSW   = 0xD0;
 sfr ACC   = 0xE0;
 sfr B     = 0xF0;
 sfr SP    = 0x81;
 sfr DPL   = 0x82;
 sfr DPH   = 0x83;
 sfr PCON  = 0x87;
 sfr TCON  = 0x88;
 sfr TMOD  = 0x89;
 sfr TL0   = 0x8A;
 sfr TL1   = 0x8B;
 sfr TH0   = 0x8C;
 sfr TH1   = 0x8D;
 sfr IE    = 0xA8;
 sfr IP    = 0xB8;
 sfr SCON  = 0x98;
 sfr SBUF  = 0x99;
 
 
 
 sfr T2CON  = 0xC8;
 sfr RCAP2L = 0xCA;
 sfr RCAP2H = 0xCB;
 sfr TL2    = 0xCC;
 sfr TH2    = 0xCD;
 
 
 
 
 sbit CY    = PSW^7;
 sbit AC    = PSW^6;
 sbit F0    = PSW^5;
 sbit RS1   = PSW^4;
 sbit RS0   = PSW^3;
 sbit OV    = PSW^2;
 sbit P     = PSW^0;  
 
 
 sbit TF1   = TCON^7;
 sbit TR1   = TCON^6;
 sbit TF0   = TCON^5;
 sbit TR0   = TCON^4;
 sbit IE1   = TCON^3;
 sbit IT1   = TCON^2;
 sbit IE0   = TCON^1;
 sbit IT0   = TCON^0;
 
 
 sbit EA    = IE^7;
 sbit ET2   = IE^5;  
 sbit ES    = IE^4;
 sbit ET1   = IE^3;
 sbit EX1   = IE^2;
 sbit ET0   = IE^1;
 sbit EX0   = IE^0;
 
 
 sbit PT2   = IP^5;
 sbit PS    = IP^4;
 sbit PT1   = IP^3;
 sbit PX1   = IP^2;
 sbit PT0   = IP^1;
 sbit PX0   = IP^0;
 
 
 sbit RD    = P3^7;
 sbit WR    = P3^6;
 sbit T1    = P3^5;
 sbit T0    = P3^4;
 sbit INT1  = P3^3;
 sbit INT0  = P3^2;
 sbit TXD   = P3^1;
 sbit RXD   = P3^0;
 
 
 sbit SM0   = SCON^7;
 sbit SM1   = SCON^6;
 sbit SM2   = SCON^5;
 sbit REN   = SCON^4;
 sbit TB8   = SCON^3;
 sbit RB8   = SCON^2;
 sbit TI    = SCON^1;
 sbit RI    = SCON^0;
 
 
 sbit T2EX  = P1^1;  
 sbit T2    = P1^0;  
 
 
 sbit TF2    = T2CON^7;
 sbit EXF2   = T2CON^6;
 sbit RCLK   = T2CON^5;
 sbit TCLK   = T2CON^4;
 sbit EXEN2  = T2CON^3;
 sbit TR2    = T2CON^2;
 sbit C_T2   = T2CON^1;
 sbit CP_RL2 = T2CON^0;
 
 
#line 1 "..\..\main.c" /0
 
 


 
 typedef unsigned int uint;	 
 typedef unsigned char uchar;


 
 
 sbit LED0 = P0^0;
 sbit LED1 = P0^1;
 sbit LED2 = P0^2;
 sbit LED3 = P0^3;
 
 
 sbit S4 = P3^3;
 sbit S5 = P3^2;
 sbit S6 = P3^1;
 sbit S7 = P3^0;
 
 
 
 
 
 
 typedef enum
 {
 UNPRESS = 0, 
 S4_PRESS = 4, 
 S5_PRESS, 
 S6_PRESS, 
 S7_PRESS 
 }KeyEvent_TypeDef;
 





 
 void Delayms(uint num)         
 {
 uchar i, j;
 do
 {
 i = 142;
 do
 {
 j = 2;
 while (--j);
 } while (--i);
 }while(num--);    
 }
 
#line 57 "..\..\main.c" /1





 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#line 78 "..\..\main.c" /0





 
 
 KeyEvent_TypeDef KeyScan(void)
 {
 static uchar lock  = 0;	 
 static uchar cnt  = 0;	 
 
 if(S4)		 
 {
 lock = 0;	 
 cnt = 0;	 
 }
 else if(!lock)	 
 {
 cnt++;		 
 if(cnt >= 8)	 
 {
 lock = 1;		 
 return S4_PRESS;
 }
 }
 return UNPRESS;
 }
 
 
#line 108 "..\..\main.c" /1








 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#line 159 "..\..\main.c" /0





 
 void KeyHandle(KeyEvent_TypeDef key_value)
 {
 switch (key_value)
 {
 case UNPRESS:
 break;
 case S4_PRESS:
 LED0 = !LED0;
 break;
 case S5_PRESS:
 LED1 = !LED1;
 break;
 case S6_PRESS:
 LED2 = !LED2;
 break;
 case S7_PRESS:
 LED3 = !LED3;
 break;
 
 default:
 break;
 }			  
 }





 
 void LED_Flow(void)
 {
 
 static unsigned char i = 0;
 
 switch (i)
 {
 case 0:
 P0 |= 0xf0;         
 i++;
 break;
 case 1:
 P0 |= 0xf0;         
 P0 &= ~0x10;         
 i++;
 break;
 case 2:
 P0 |= 0xf0;         
 P0 &= ~0x30;         
 i++;
 break;
 case 3:
 P0 |= 0xf0;         
 P0 &= ~0x70;         
 i++;
 break;
 case 4:
 P0 &= ~0xf0;         
 i = 0;
 break;
 default:
 break;
 }
 }


 
 void main(void)
 {
 
 LED0 = 0;
 LED1 = 0;
 LED2 = 0;
 LED3 = 0;
 
 while(1)
 {
 KeyHandle(KeyScan());		 
 Delayms(2);
 LED_Flow();
 Delayms(500);
 }        
 }
